import { isLogin } from "@/config";
import { getAccessToken } from '@/utils/auth'

// 只要是未登录状态，想要跳转到名单内的路径时，直接跳到登录页。
// 页面白名单，不受拦截
const whiteList = [
    '/pages/login/index',
    '/pages/register/index',
]

// 跳转方式
const list = [
    "navigateTo", // 页面跳转前进行拦截
    "redirectTo",
    "reLaunch",
    "switchTab", // tabbar页面跳转前进行拦截
]

function hasPermission(url: any) {
    console.log(isLogin);
    // 是否开启登录拦截
    if (isLogin) {
        // 在白名单中或有token可以直接跳转
        const token = getAccessToken()
        if (whiteList.indexOf(url) !== -1 || token) return true
        return false
    }
    return true
}

export function routerBeforeEach() {
    list.forEach((item) => {
        uni.addInterceptor(item, {
            // 进行拦截, invoke根据返回值进行判断是否继续执行跳转
            // 拦截前触发
            invoke(e) {
                console.log('哈？', e.url);
                if (!hasPermission(e.url)) {
                    uni.showModal({
                        title: '提示',
                        content: '您还未登录，请先进行登录',
                        success: function (res) {
                            if (res.confirm) uni.reLaunch({ url: '/pages/login/index' })
                        }
                    });
                    return false
                }
                return true
            },
            // 成功回调拦截
            success(e) { }
        })
    })
}
